package com.yz.design.factoryDesign.abstractFactory;

/**
 * 抽象工厂模式
 * 抽象工厂是生产一整套有产品的（至少要生产两个产品)，这些产品必须相互是有关系或有依赖的，而工厂方法中的工厂是生产单一产品的工厂
 * 一个工厂可以生成不同的产品
 * 可以由不同品牌的工厂生成具体产品
 */
public class Main {
    public static void main(String[] args) {
        // 1.惠普工厂 生成鼠标和键盘
        // 2.由惠普工厂来生成 鼠标
        Factory factory = new HPFactory();
        IMouse iMouse = factory.getMouseFactory();
        System.out.println(iMouse.getMouseInfo());
        // 3.由惠普工厂来生成 键盘
        IKeyboard keyboardFactory = factory.getKeyboardFactory();
        System.out.println(keyboardFactory.getKeyboardInfo());


        // 1.联想工厂 生成鼠标和键盘
        // 2.由联想工厂工厂来生成 鼠标
        Factory factory1 = new LenoveFactory();
        IMouse iMouse1 = factory1.getMouseFactory();
        System.out.println(iMouse1.getMouseInfo());
        // 3.由联想工厂来生成 键盘
        IKeyboard keyboardFactory2 = factory1.getKeyboardFactory();
        System.out.println(keyboardFactory2.getKeyboardInfo());
    }
}